1. Technical Field
The present disclosure relates to storage systems and, more specifically, to efficient logging and checkpointing of metadata in a storage system.
2. Background Information
A storage system typically includes one or more storage devices, such as disks embodied as hard disk drives or solid state drives, into which information may be entered, and from which information may be obtained, as desired. The storage system may implement a high-level module, such as a file system, to logically organize the information stored on the disks as storage containers, such as files or logical units. Each storage container may be implemented as a set of data structures, such as data blocks that store data for the storage containers and metadata blocks that describe the data of the storage containers. For example, the metadata may describe, e.g., identify, storage locations on the disks for the data.
A traditional file system may perform fixed checkpoints, wherein the entire state of the file system is consistently written as an image on disk, as of a point in time. This may handicap an architecture that is configured to spread the metadata evenly through an entire main memory because updates, including any slightly changed blocks, spread throughout the memory may require most of the memory to be checkpointed. For example, assume the traditional file system renders continuous, small changes (updates) to the metadata that are collected and eventually written to disk as a series of 4 kilobyte pages. Generally, such updates occur evenly and randomly through the entire main memory of the system. Thus to checkpoint these updates may require writing the contents of the entire memory, which may consume many gigabytes and cannot be performed frequently. It is also desirable to avoid the bandwidth disruption resulting from writing out such a large amount of memory at once. That is, it is desirable to gather updates from the memory and store the updates efficiently on disk. A more efficient logging and checkpointing mechanism is thus needed.